<?php
#==============================================================================
#Versi�n 11-09-2011
#==============================================================================

#==============================================================================
# Activa debug
#==============================================================================
function aux_debug($pdebug) {

}

#========================================================
# Crea un archivo con el log con la depuraci�n de errores
#========================================================
include 'bmp.php'; //Implementa la función <imagecreatefrombmp>

function DepurardorErrores($pFlag= false) {
  if ($pFlag) {
    $fileError = fopen('phpErrores.txt', 'w+');
    fclose($fileError);
    error_reporting(E_ALL);
    ini_set('display_errors', true);
    ini_set('html_errors', true);
    ini_set('log_errors', '1');
    ini_set('error_log', 'phpErrores.txt');
  }
}

#=============================================================================
# Genera un evento ajax con los par�metros que siguen
# function javascrpt:  CabClick(pCab)
# $Unidad: nombre de la Clase: ejemplo uMain
# $Objeto: Objeto que genera el evento. Tiene que ser un objeto PHP
# $Params: parmentro que se pasa a la funci�n Ajax
# $Funcion: Nombre de la funci�n php, sin par�metros, que se va a ejecutar
# C$Refresco: andena de string con los objetos a refrescar: "'pnCabecera','Otra'"
# Ejemplo:  echo jsEventoAjax('CabClick(pCab)','uMain','pnCabecera','pCab','AjaxGridCab', "'pnCabecera'");
#==============================================================================

function jsEventoAjax($FuncionJS, $Unidad, $Objeto, $Parametro, $FuncionPhp, $Refresco) {
  $Cad = chr(13);
  $Cad = $Cad . '<script type="text/javascript"> ' . chr(13);
  $Cad = $Cad . ' function ' . $FuncionJS . '{' . chr(13);
  $Cad = $Cad . '	var params= ' . $Parametro . ';' . chr(13);
  $Cad = $Cad . ' 	xajax_ajaxProcess("' . $Unidad . '", ';
  $Cad = $Cad . ' "' . $Objeto . '", ';
  $Cad = $Cad . ' params, ';
  $Cad = $Cad . ' "' . $FuncionPhp . '", ';
  $Cad = $Cad . ' xajax.getFormValues("' . $Unidad . '"), [' . $Refresco . ']);' . chr(13);
  $Cad = $Cad . ' 	return(false);' . chr(13);
  $Cad = $Cad . ' };' . chr(13);
  $Cad = $Cad . '</script>' . chr(13);
  return $Cad;
}

//==========================================================
function iif($pvalor, $pUno, $pDos) {
  if ($pvalor)
    return $pUno; else
    return $pDos;
}

//============================================================
function SetValor($pObjeto, $pValor) {
  $pObjeto->Text = $pValor;
}

function GetValor($pObjeto) {
  return $pObjeto->Text;
}

//==========================================================
//Pasa una variabel a de PHP a JS
function VarPHPaJS($pNombre, $pVariable) {
  echo '<script> var ' . $pNombre . '= "' . $pVariable . '" </script>';
}

#==========================================================
# Simula una alerta al igual que JavaScipto  (Versi�n Beta)
#==========================================================

function alerta($pObjeto) {    //chr(172)
  $temp = str_replace(chr(13), chr(172), print_r($pObjeto, true));
  $temp = str_replace(chr(10), '', $temp);
  /*
    $temp= print_r($pObjeto, true);
    $i= 1;
    $largo = strlen($temp);

    while ($i< $largo){
    if ($temp[$i]== chr(13)) { $temp[$i] = chr(172);};
    if ($temp[$i]== chr(10)) { $temp[$i] = chr(172);};
    $i++;
    }
   */
  echo '<script> alert( "' . $temp . '" ) </script>';
}

//===============================================================
function urlActual() {
  $url = "http://" . $_SERVER['HTTP_HOST'] . ":" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
  return $url;
}

#================================================================
# Incrementa un valor n�merico depositandolo en un archvio
#===============================================================

function Contador($pArchivo) {
  $Arc = fopen($pArchivo, 'c+b');
  if (filesize($pArchivo)) {
    $Valor = fread($Arc, filesize($pArchivo));
  }
  fclose($Arc);
  $Valor++;
  $Arc = fopen($pArchivo, 'w');
  fwrite($Arc, $Valor);
  fclose($Arc);
  return $Valor;
}

#================================================================
# Comprueba que la imagen JPEG es correcta
#================================================================

function jpeg_Ok($path) {
  if (!is_resource($file = fopen($path, 'rb'))) {
    return FALSE;
  }
  // check for the existence of the EOI segment header at the end of the file
  if (0 !== fseek($file, -2, SEEK_END) || "\xFF\xD9" !== fread($file, 2)) {
    fclose($file);
    return FALSE;
  }
  fclose($file);
  return TRUE;
}

#=================================================================
# Detecta si el GoogleWord debe contabilizar esta lectura
# $pURL= Url que debe tener en cuenta (evita los entornos de prueba).
# $pfIP= Nombre del archivo que contiene las IP que debe evitar
# Devuelve true si debe contabilizarlo.
#=================================================================

function CuentaGoogle($pURL, $pfIP) {
  $url = strtoupper($pURL);
  $IP = $_SERVER['REMOTE_ADDR'];
  $ipLocal = file($pfIP);
  $ipLocal = str_replace(array(chr(13), chr(10)), array('', ''), $ipLocal);
  $bTemp = true;
  foreach ($ipLocal as $valor) {
    $pos = strpos($IP, $valor);
    if ($pos !== false) {
      $bTemp = false;
    }
  }
  $Server = strtoupper($_SERVER["SERVER_NAME"]);
  //alerta($Server);
  if ($Server == $url) {
    return $bTemp;
  }
  return false;
}

#==============================================================
# Elimina los caracteres en los archivos con %20
# Hace una copia una vez limpio
# Devuelve el nombre del archivo una vez corregido
#==============================================================

function LimpiarNombreArchivo($pPath) {
  $TempPath = str_ireplace('%20', '', $pPath);
  if (!file_exists($TempPath)) {
    copy($pPath, $TempPath);
  }
  return $TempPath;
}

#=============================================================
# Cargaa en un array de dos dimenciones desde un fichero de texto
# El formato es una linea por cada subarray y ; separando ada elemento
#================================================================

function ArchivoToArray($pArchivo) {
  $aResultado = array();
  $aLineas = file($pArchivo);
  if (!$aLineas) {
    alerta('Error al abrir el archivo: ' . $pArchivo);
    exit;
  }
  $i = -1;
  foreach ($aLineas as $SubArray) {
    if (strpos($SubArray, '#') === false) { //quita comentarios
      $i++;
      $aSub = explode(';', $SubArray);
      $x = -1;
      foreach ($aSub as $Elemento) {
        $x++;
        $aResultado[$i][$x] = $Elemento;
      }
    }
  }
  return $aResultado;
}

#=================================================================
# Crea un archivo mini de un MPG: incrustandole al nombre original '_mini'
# $pImagen: patch con el mombre original
# $pX y $pY: dimensiones de la imagen
# $pComp: Nivel de compresión (máximo 100)
#=================================================================

function CreaThumb($pRaiz, $pImagen, $pX, $pY, $pComp) {
  $NombreArchivoMini = '';
  $original = False;
  $fInfo = finfo_open(FILEINFO_MIME_TYPE);
  $sInfo = finfo_file($fInfo, $pRaiz . $pImagen);
  if ($sInfo) {
    $aTmp = explode(".", $pImagen);
    //$extension= '_mini.' .end($aTmp);
    $extension = '_mini.jpg';
    $aTmp[count($aTmp) - 1] = $extension;
    $NombreArchivoMini = implode('', $aTmp);
    if (!file_exists($pRaiz . $NombreArchivoMini)) {
      //echo($sInfo);
      switch ($sInfo) {
        case 'image/x-ms-bmp':
          //echo ('BMP<br>');
          $original = imagecreatefrombmp($pRaiz . $pImagen); //función inexistente implementada en <BMP.PHP>
          break;
        case 'image/jpeg':
          //echo ('JPG<br>');
          $original = imagecreatefromjpeg($pRaiz . $pImagen);
          break;
        case 'image/png':
          //echo ('PNG<br>');
          $original = imagecreatefrompng($pRaiz . $pImagen);
          break;
        case 'image/gif':
          //echo ('GIF<br>');
          $original = imagecreatefromgif($pRaiz . $pImagen);
          break;
      }
      if ($original) {
        CreaImagen($original, $pRaiz . $NombreArchivoMini, $pX, $pY, $pComp);
      } else {
        $NombreArchivoMini = FALSE;
      }
    }
  } else { //error en el archivo
    $NombreArchivoMini = FALSE;
  }
  return $NombreArchivoMini;
}

function CreaImagen($pOriginal, $pNombreArchivoMini, $ppX, $ppY, $ppComp) {
  $thumb = imagecreatetruecolor($ppX, $ppY); // Lo haremos al tamaño  de pX y Py
  $ancho = imagesx($pOriginal);
  $alto = imagesy($pOriginal);
  imagecopyresampled($thumb, $pOriginal, 0, 0, 0, 0, $ppX, $ppY, $ancho, $alto);
  imagejpeg($thumb, $pNombreArchivoMini, $ppComp);
}

//================================================================================
?>